নেস্টেড লুপস হল লুপের মধ্যে একটি লুপ। AWK তে নেস্টেড লুপ ব্যবহার করে একাধিক স্তরের ডেটা প্রক্রিয়াকরণের কাজ করা যায়। এটি ডেটা টেবিল, ম্যাট্রিক্স, অথবা যখন একাধিক ডেটা সেটের সাথে কাজ করা হয় তখন উপকারী।
AWK তে নেস্টেড লুপের সাধারণ গঠন হল:
awk '{
for (i = 1; i <= N; i++) {
for (j = 1; j <= M; j++) {
# কিছু কাজ
}
}
}' filename
এখানে, N
এবং M
হল লুপের সীমা। প্রথম লুপটি i
পরিবর্তনশীলের মাধ্যমে চলবে এবং তার মধ্যে দ্বিতীয় লুপটি j
পরিবর্তনশীলের মাধ্যমে চলবে।
ধরা যাক, আমাদের কাছে একটি টেক্সট ফাইল matrix.txt
রয়েছে যার মধ্যে কিছু সংখ্যা আছে:
1 2 3
4 5 6
7 8 9
আমরা চাই প্রতিটি সংখ্যার ওপর গুনফল করতে এবং ফলাফল প্রিন্ট করতে।
awk '{
for (i = 1; i <= NF; i++) {
for (j = 1; j <= NF; j++) {
product = $i * $j
print "Product of " $i " and " $j " is: " product
}
}
}' matrix.txt
ফলাফল:
Product of 1 and 1 is: 1
Product of 1 and 2 is: 2
Product of 1 and 3 is: 3
Product of 2 and 1 is: 2
Product of 2 and 2 is: 4
Product of 2 and 3 is: 6
...
এখানে, প্রথম লুপ i
ব্যবহার করে প্রতি ফিল্ডের মানের জন্য এবং দ্বিতীয় লুপ j
ব্যবহার করে অন্য ফিল্ডের সাথে গুণফল করা হয়েছে।
একটি 2D ম্যাট্রিক্সের ট্রান্সপোজ তৈরি করতে নেস্টেড লুপ ব্যবহার করা যেতে পারে। ধরুন আমাদের কাছে নিম্নলিখিত matrix.txt
ফাইল রয়েছে:
1 2 3
4 5 6
7 8 9
আমরা এটিকে ট্রান্সপোজ করতে চাই:
awk '{
for (i = 1; i <= NF; i++) {
matrix[NR, i] = $i
}
rows = NR
}
END {
for (i = 1; i <= NF; i++) {
for (j = 1; j <= rows; j++) {
printf "%d ", matrix[j, i]
}
print ""
}
}' matrix.txt
ফলাফল:
1 4 7
2 5 8
3 6 9
এখানে, প্রথম লুপটি প্রতিটি সংখ্যা ম্যাট্রিক্সে সংরক্ষণ করে এবং দ্বিতীয় লুপটি ট্রান্সপোজ আউটপুট তৈরি করে।
ধরা যাক, আমরা 1 থেকে 3 পর্যন্ত সংখ্যার জন্য 1 থেকে 3 পর্যন্ত সংখ্যা জেনারেট করতে চাই:
awk '{
for (i = 1; i <= 3; i++) {
for (j = 1; j <= 3; j++) {
print "i: " i ", j: " j
}
}
}' filename
ফলাফল:
i: 1, j: 1
i: 1, j: 2
i: 1, j: 3
i: 2, j: 1
i: 2, j: 2
i: 2, j: 3
i: 3, j: 1
i: 3, j: 2
i: 3, j: 3
এখানে, প্রথম লুপ i
এর জন্য এবং দ্বিতীয় লুপ j
এর জন্য কাজ করছে, এবং তাদের সাথে সমস্ত সম্ভাব্য সংমিশ্রণ প্রিন্ট করছে।
AWK তে নেস্টেড লুপস ব্যবহার করে ডেটা টেবিল, ম্যাট্রিক্স, অথবা একাধিক ডেটা সেটের সাথে কাজ করা যায়। এটি জটিল ডেটা প্রক্রিয়াকরণের জন্য অত্যন্ত কার্যকর। AWK এর শক্তিশালী লজিক্যাল অপারেটর এবং লুপিং কাঠামোর মাধ্যমে ডেটা বিশ্লেষণের কাজকে আরও সহজ এবং দ্রুত করা সম্ভব।
common.read_more